//////////////////////////////////////////////////////////////////////////
#pragma once
//////////////////////////////////////////////////////////////////////////
#include <list>
#include "MainHelpers/MainHelpers.h"
//////////////////////////////////////////////////////////////////////////
class Scene;
class HotSpot;
//////////////////////////////////////////////////////////////////////////
class Application
{
public:
	~Application();
	void						loadScene(Scene* scene);
	void						render();
	void						update(float dt);
	void						addHotSpot(HotSpot* hotSpot);
	void						setUpdateHSListNeeded();
	bool						updateHSListNeeded() const {return m_updateHSListNeeded;};
	hlp::Pointf					getMousePos() {return m_mousePos;};
	void						exit();
	bool						exitReady() {return m_exitReady;};

	static Application*			instance();
	static void					createApplication();
	static void					deleteApplication();

private:
	Application();
	void						deleteCurrentScene();

private:
	Scene*						m_currentScene;
	Scene*						m_lastScene;
	static Application*			m_instance;
	std::list<HotSpot*>			m_hotSpotesList;
	bool						m_updateHSListNeeded;
	static int					m_mouseButtons[3];
	hlp::Pointf					m_mousePos;
	bool						m_exitReady;
};
//////////////////////////////////////////////////////////////////////////